import datetime; now=datetime.date.today() 

# application db
gemag=SQLDB("sqlite://gemag.db")
GAE=False

# db tables

#table categorie
gemag.define_table('categorie',SQLField('categoria'))

# table articoli
gemag.define_table('articoli',
                SQLField('nuc',requires=IS_NOT_EMPTY()),
                SQLField('categoria',requires=IS_IN_DB(gemag,'categorie.categoria','%(categoria)s')),
                SQLField('descrizione',requires=IS_NOT_EMPTY()),
                SQLField('matricola',default='',requires=IS_NOT_IN_DB(gemag,'articoli.matricola',error_message="matricola presente in archivio")),
                SQLField('quantita','integer',requires=IS_NOT_EMPTY()),
                SQLField('foto','upload',uploadfield='image_data' if GAE else True),
                SQLField('image_data','blob',default=''),
                SQLField('note','text'))

gemag.articoli.represent=lambda articolo: A(articoli.descrizione,_href=t2.action('display',articoli.id))

gemag.define_table('t2_person',
   SQLField('name',requires=IS_NOT_EMPTY()),
   SQLField('password','password',requires=CRYPT()),
   SQLField('email',requires=IS_EMAIL()),
   SQLField('registration_key'))

gemag.define_table('tipoente',SQLField('tipo'))

gemag.define_table('province',SQLField('provincia'))

gemag.define_table('enti',
    SQLField('tipo',requires=IS_IN_DB(gemag,'tipoente.tipo','%(tipo)s')),
    SQLField('descrizione',requires=IS_NOT_EMPTY()),
    SQLField('provincia',requires=IS_IN_DB(gemag,'province.provincia','%(provincia)s')))

gemag.define_table('movimenti',
    SQLField('data','date',requires=IS_DATE('%d/%m/%Y'),default=now),
    #SQLField('t2_person_id',default=gemag.t2_person.id),
    SQLField('ente_id',gemag.enti),
    SQLField('tipo','text',requires=IS_IN_SET(['carico','scarico']),default=''),
    SQLField('completato','boolean',default=False))
    
gemag.define_table('movimenti_lista',
    SQLField('movimenti_id',gemag.movimenti),
    SQLField('articoli_id',gemag.articoli),
    SQLField('quantita','integer'))

gemag.define_table('fornitori',
    SQLField('denominazione',length=32,notnull=True,default=''),
    SQLField('indirizzo',length=32,default=''),
    SQLField('citta',length=32,default=''),
    SQLField('cap',length=10,default=''),
    SQLField('provincia',length=4,requires=IS_IN_DB(gemag,'province.provincia','%(provincia)s')),
    SQLField('tel1',length=16,default=''),
    SQLField('tel2',length=16,default=''),
    SQLField('fax',length=16,default=''),
    SQLField('mail1',length=32,default=''),
    SQLField('mail2',length=32,default=''),
    SQLField('cfpiva',length=32,default=''))

# table destinatari
gemag.define_table("destinatari",
    SQLField("cognome","string",length=32,notnull=True,default=""),
    SQLField("nome","string",length=32,default=""),
    SQLField("indirizzo","string",length=32,default=""),
    SQLField("citta","string",length=32,default=""),
    SQLField("cap","string",length=10,default=""),
    SQLField("provincia","string",length=4,requires=IS_IN_DB(gemag,'province.provincia','%(provincia)s')),
    SQLField("tel1","string",length=16,default=""),
    SQLField("tel2","string",length=16,default=""),
    SQLField("fax","string",length=16,default=""),
    SQLField("mail1","string",length=32,default=""),
    SQLField("mail2","string",length=32,default=""),
    SQLField("cfpiva","string",length=32,default=""))
    
from applications.plugin_t2.modules.t2 import T2
t2=T2(request,response,session,cache,T,gemag)